--Create By BuildApi, Create time: 2019-12-19 00:55:20
-----------------------------------------------------------------
--classes define
-----------------------------------------------------------------
---@class ImFont
---@field public IndexAdvanceX ImVector<float>
---@field public FallbackAdvanceX number
---@field public FontSize number
---@field public IndexLookup ImVector<uint16_t>
---@field public Glyphs ImVector<ImFontGlyph>
---@field public FallbackGlyph ImFontGlyph
---@field public DisplayOffset ImVec2
---@field public ContainerAtlas ImFontAtlas
---@field public ConfigData ImFontConfig
---@field public ConfigDataCount number
---@field public FallbackChar number
---@field public EllipsisChar number
---@field public Scale number
---@field public Ascent number
---@field public Descent number
---@field public MetricsTotalSurface number
---@field public DirtyLookupTables boolean
ImFont = {}

---@return ImFont
function ImFont:new() end

function ImFont:delete() end

---@param c number
---@return ImFontGlyph
function ImFont:FindGlyph(c) end

---@param c number
---@return ImFontGlyph
function ImFont:FindGlyphNoFallback(c) end

---@param c number
---@return number
function ImFont:GetCharAdvance(c) end

---@return boolean
function ImFont:IsLoaded() end

---@return string
function ImFont:GetDebugName() end

---@param size number
---@param max_width number
---@param wrap_width number
---@param text_begin string
---@param text_end string @default value:NULL
---@param remaining string @default value:NULL
---@return ImVec2
function ImFont:CalcTextSizeA(size, max_width, wrap_width, text_begin, text_end, remaining) end

---@param scale number
---@param text string
---@param text_end string
---@param wrap_width number
---@return string
function ImFont:CalcWordWrapPositionA(scale, text, text_end, wrap_width) end

---@param draw_list ImDrawList
---@param size number
---@param pos ImVec2
---@param col ImU32
---@param c number
function ImFont:RenderChar(draw_list, size, pos, col, c) end

---@param draw_list ImDrawList
---@param size number
---@param pos ImVec2
---@param col ImU32
---@param clip_rect ImVec4
---@param text_begin string
---@param text_end string
---@param wrap_width number @default value:0.0f
---@param cpu_fine_clip boolean @default value:false
function ImFont:RenderText(draw_list, size, pos, col, clip_rect, text_begin, text_end, wrap_width, cpu_fine_clip) end

function ImFont:BuildLookupTable() end

function ImFont:ClearOutputData() end

---@param new_size number
function ImFont:GrowIndex(new_size) end

---@param c number
---@param x0 number
---@param y0 number
---@param x1 number
---@param y1 number
---@param u0 number
---@param v0 number
---@param u1 number
---@param v1 number
---@param advance_x number
function ImFont:AddGlyph(c, x0, y0, x1, y1, u0, v0, u1, v1, advance_x) end

---@param dst number
---@param src number
---@param overwrite_dst boolean @default value:true
function ImFont:AddRemapChar(dst, src, overwrite_dst) end

---@param c number
function ImFont:SetFallbackChar(c) end


-----------------------------------------------------------------
---@class ImFontAtlas
---@field public Locked boolean
---@field public Flags number
---@field public TexID ImTextureID
---@field public TexDesiredWidth number
---@field public TexGlyphPadding number
---@field public TexWidth number
---@field public TexHeight number
---@field public TexUvScale ImVec2
---@field public TexUvWhitePixel ImVec2
---@field public ConfigData ImVector<ImFontConfig>
---@field public CustomRectIds number[]
ImFontAtlas = {}

---@return ImFontAtlas
function ImFontAtlas:new() end

function ImFontAtlas:delete() end

---@param font_cfg ImFontConfig
---@return ImFont
function ImFontAtlas:AddFont(font_cfg) end

---@param font_cfg ImFontConfig @default value:NULL
---@return ImFont
function ImFontAtlas:AddFontDefault(font_cfg) end

---@param filename string
---@param size_pixels number
---@param font_cfg ImFontConfig @default value:NULL
---@param glyph_ranges number @default value:NULL
---@return ImFont
function ImFontAtlas:AddFontFromFileTTF(filename, size_pixels, font_cfg, glyph_ranges) end

---@param font_data void
---@param font_size number
---@param size_pixels number
---@param font_cfg ImFontConfig @default value:NULL
---@param glyph_ranges number @default value:NULL
---@return ImFont
function ImFontAtlas:AddFontFromMemoryTTF(font_data, font_size, size_pixels, font_cfg, glyph_ranges) end

---@param compressed_font_data void
---@param compressed_font_size number
---@param size_pixels number
---@param font_cfg ImFontConfig @default value:NULL
---@param glyph_ranges number @default value:NULL
---@return ImFont
function ImFontAtlas:AddFontFromMemoryCompressedTTF(compressed_font_data, compressed_font_size, size_pixels, font_cfg, glyph_ranges) end

---@param compressed_font_data_base85 string
---@param size_pixels number
---@param font_cfg ImFontConfig @default value:NULL
---@param glyph_ranges number @default value:NULL
---@return ImFont
function ImFontAtlas:AddFontFromMemoryCompressedBase85TTF(compressed_font_data_base85, size_pixels, font_cfg, glyph_ranges) end

function ImFontAtlas:ClearInputData() end

function ImFontAtlas:ClearTexData() end

function ImFontAtlas:ClearFonts() end

function ImFontAtlas:Clear() end

---@param out_pixels string
---@param out_width number
---@param out_height number
---@param out_bytes_per_pixel number @default value:NULL
function ImFontAtlas:GetTexDataAsAlpha8(out_pixels, out_width, out_height, out_bytes_per_pixel) end

---@param out_pixels string
---@param out_width number
---@param out_height number
---@param out_bytes_per_pixel number @default value:NULL
function ImFontAtlas:GetTexDataAsRGBA32(out_pixels, out_width, out_height, out_bytes_per_pixel) end

---@return boolean
function ImFontAtlas:IsBuilt() end

---@param id void
function ImFontAtlas:SetTexID(id) end

---@return number
function ImFontAtlas:GetGlyphRangesDefault() end

---@return number
function ImFontAtlas:GetGlyphRangesKorean() end

---@return number
function ImFontAtlas:GetGlyphRangesJapanese() end

---@return number
function ImFontAtlas:GetGlyphRangesChineseFull() end

---@return number
function ImFontAtlas:GetGlyphRangesChineseSimplifiedCommon() end

---@return number
function ImFontAtlas:GetGlyphRangesCyrillic() end

---@return number
function ImFontAtlas:GetGlyphRangesThai() end

---@return number
function ImFontAtlas:GetGlyphRangesVietnamese() end

---@param id number
---@param width number
---@param height number
---@return number
function ImFontAtlas:AddCustomRectRegular(id, width, height) end

---@param font ImFont
---@param id number
---@param width number
---@param height number
---@param advance_x number
---@param offset ImVec2 @default value:ImVec2(0,0)
---@return number
function ImFontAtlas:AddCustomRectFontGlyph(font, id, width, height, advance_x, offset) end

---@param index number
---@return ImFontAtlasCustomRect
function ImFontAtlas:GetCustomRectByIndex(index) end

---@param rect ImFontAtlasCustomRect
---@param out_uv_min ImVec2
---@param out_uv_max ImVec2
function ImFontAtlas:CalcCustomRectUV(rect, out_uv_min, out_uv_max) end

---@param cursor ImGuiMouseCursor
---@param out_offset ImVec2
---@param out_size ImVec2
---@param out_uv_border ImVec2[]
---@param out_uv_fill ImVec2[]
---@return boolean
function ImFontAtlas:GetMouseCursorTexData(cursor, out_offset, out_size, out_uv_border, out_uv_fill) end


-----------------------------------------------------------------
---@class ImFontAtlasCustomRect
---@field public ID number
---@field public Width number
---@field public Height number
---@field public X number
---@field public Y number
---@field public GlyphAdvanceX number
---@field public GlyphOffset ImVec2
---@field public Font ImFont
ImFontAtlasCustomRect = {}

---@return ImFontAtlasCustomRect
function ImFontAtlasCustomRect:new() end

---@return boolean
function ImFontAtlasCustomRect:IsPacked() end


-----------------------------------------------------------------
---@class ImFontConfig
---@field public FontData void
---@field public FontDataSize number
---@field public FontDataOwnedByAtlas boolean
---@field public FontNo number
---@field public SizePixels number
---@field public OversampleH number
---@field public OversampleV number
---@field public PixelSnapH boolean
---@field public GlyphExtraSpacing ImVec2
---@field public GlyphOffset ImVec2
---@field public GlyphMinAdvanceX number
---@field public GlyphMaxAdvanceX number
---@field public MergeMode boolean
---@field public RasterizerFlags number
---@field public RasterizerMultiply number
---@field public EllipsisChar number
---@field public Name[40] string
---@field public DstFont ImFont
ImFontConfig = {}

---@return ImFontConfig
function ImFontConfig:new() end


-----------------------------------------------------------------
---@class ImFontGlyph
---@field public Codepoint number
---@field public AdvanceX number
---@field public X0 number
---@field public Y0 number
---@field public X1 number
---@field public Y1 number
---@field public U0 number
---@field public V0 number
---@field public U1 number
---@field public V1 number
ImFontGlyph = {}


-----------------------------------------------------------------
---@class ImGui
ImGui = {}

---@param shared_font_atlas ImFontAtlas @default value:NULL
---@return ImGuiContext
function ImGui:CreateContext(shared_font_atlas) end

---@param ctx ImGuiContext @default value:NULL
function ImGui:DestroyContext(ctx) end

---@return ImGuiContext
function ImGui:GetCurrentContext() end

---@param ctx ImGuiContext
function ImGui:SetCurrentContext(ctx) end

---@param version_str string
---@param sz_io number
---@param sz_style number
---@param sz_vec2 number
---@param sz_vec4 number
---@param sz_drawvert number
---@param sz_drawidx number
---@return boolean
function ImGui:DebugCheckVersionAndDataLayout(version_str, sz_io, sz_style, sz_vec2, sz_vec4, sz_drawvert, sz_drawidx) end

---@return ImGuiIO
function ImGui:GetIO() end

---@return ImGuiStyle
function ImGui:GetStyle() end

function ImGui:NewFrame() end

function ImGui:EndFrame() end

function ImGui:Render() end

---@return ImDrawData
function ImGui:GetDrawData() end

---@param p_open boolean @default value:NULL
function ImGui:ShowDemoWindow(p_open) end

---@param p_open boolean @default value:NULL
function ImGui:ShowAboutWindow(p_open) end

---@param p_open boolean @default value:NULL
function ImGui:ShowMetricsWindow(p_open) end

---@param ref ImGuiStyle @default value:NULL
function ImGui:ShowStyleEditor(ref) end

---@param label string
---@return boolean
function ImGui:ShowStyleSelector(label) end

---@param label string
function ImGui:ShowFontSelector(label) end

function ImGui:ShowUserGuide() end

---@return string
function ImGui:GetVersion() end

---@param dst ImGuiStyle @default value:NULL
function ImGui:StyleColorsDark(dst) end

---@param dst ImGuiStyle @default value:NULL
function ImGui:StyleColorsClassic(dst) end

---@param dst ImGuiStyle @default value:NULL
function ImGui:StyleColorsLight(dst) end

---@param name string
---@param p_open boolean @default value:NULL
---@param flags number @default value:0
---@return boolean
function ImGui:Begin(name, p_open, flags) end

function ImGui:End() end

---@param str_id string
---@param size ImVec2 @default value:ImVec2(0,0)
---@param border boolean @default value:false
---@param flags number @default value:0
---@return boolean
function ImGui:BeginChild(str_id, size, border, flags) end

---@param id ImGuiID
---@param size ImVec2 @default value:ImVec2(0,0)
---@param border boolean @default value:false
---@param flags number @default value:0
---@return boolean
function ImGui:BeginChild(id, size, border, flags) end

function ImGui:EndChild() end

---@return boolean
function ImGui:IsWindowAppearing() end

---@return boolean
function ImGui:IsWindowCollapsed() end

---@param flags number @default value:0
---@return boolean
function ImGui:IsWindowFocused(flags) end

---@param flags number @default value:0
---@return boolean
function ImGui:IsWindowHovered(flags) end

---@return ImDrawList
function ImGui:GetWindowDrawList() end

---@return ImVec2
function ImGui:GetWindowPos() end

---@return ImVec2
function ImGui:GetWindowSize() end

---@return number
function ImGui:GetWindowWidth() end

---@return number
function ImGui:GetWindowHeight() end

---@param pos ImVec2
---@param cond number @default value:0
---@param pivot ImVec2 @default value:ImVec2(0,0)
function ImGui:SetNextWindowPos(pos, cond, pivot) end

---@param size ImVec2
---@param cond number @default value:0
function ImGui:SetNextWindowSize(size, cond) end

---@param size ImVec2
function ImGui:SetNextWindowContentSize(size) end

---@param collapsed boolean
---@param cond number @default value:0
function ImGui:SetNextWindowCollapsed(collapsed, cond) end

function ImGui:SetNextWindowFocus() end

---@param alpha number
function ImGui:SetNextWindowBgAlpha(alpha) end

---@param pos ImVec2
---@param cond number @default value:0
function ImGui:SetWindowPos(pos, cond) end

---@param size ImVec2
---@param cond number @default value:0
function ImGui:SetWindowSize(size, cond) end

---@param collapsed boolean
---@param cond number @default value:0
function ImGui:SetWindowCollapsed(collapsed, cond) end

function ImGui:SetWindowFocus() end

---@param scale number
function ImGui:SetWindowFontScale(scale) end

---@param name string
---@param pos ImVec2
---@param cond number @default value:0
function ImGui:SetWindowPos(name, pos, cond) end

---@param name string
---@param size ImVec2
---@param cond number @default value:0
function ImGui:SetWindowSize(name, size, cond) end

---@param name string
---@param collapsed boolean
---@param cond number @default value:0
function ImGui:SetWindowCollapsed(name, collapsed, cond) end

---@param name string
function ImGui:SetWindowFocus(name) end

---@return ImVec2
function ImGui:GetContentRegionMax() end

---@return ImVec2
function ImGui:GetContentRegionAvail() end

---@return ImVec2
function ImGui:GetWindowContentRegionMin() end

---@return ImVec2
function ImGui:GetWindowContentRegionMax() end

---@return number
function ImGui:GetWindowContentRegionWidth() end

---@return number
function ImGui:GetScrollX() end

---@return number
function ImGui:GetScrollY() end

---@return number
function ImGui:GetScrollMaxX() end

---@return number
function ImGui:GetScrollMaxY() end

---@param scroll_x number
function ImGui:SetScrollX(scroll_x) end

---@param scroll_y number
function ImGui:SetScrollY(scroll_y) end

---@param center_x_ratio number @default value:0.5f
function ImGui:SetScrollHereX(center_x_ratio) end

---@param center_y_ratio number @default value:0.5f
function ImGui:SetScrollHereY(center_y_ratio) end

---@param local_x number
---@param center_x_ratio number @default value:0.5f
function ImGui:SetScrollFromPosX(local_x, center_x_ratio) end

---@param local_y number
---@param center_y_ratio number @default value:0.5f
function ImGui:SetScrollFromPosY(local_y, center_y_ratio) end

---@param font ImFont
function ImGui:PushFont(font) end

function ImGui:PopFont() end

---@param idx number
---@param col number
function ImGui:PushStyleColor(idx, col) end

---@param idx number
---@param col ImVec4
function ImGui:PushStyleColor(idx, col) end

---@param count number @default value:1
function ImGui:PopStyleColor(count) end

---@param idx number
---@param val number
function ImGui:PushStyleVar(idx, val) end

---@param idx number
---@param val ImVec2
function ImGui:PushStyleVar(idx, val) end

---@param count number @default value:1
function ImGui:PopStyleVar(count) end

---@param idx number
---@return ImVec4
function ImGui:GetStyleColorVec4(idx) end

---@return ImFont
function ImGui:GetFont() end

---@return number
function ImGui:GetFontSize() end

---@return ImVec2
function ImGui:GetFontTexUvWhitePixel() end

---@param idx number
---@param alpha_mul number @default value:1.0f
---@return number
function ImGui:GetColorU32(idx, alpha_mul) end

---@param col ImVec4
---@return number
function ImGui:GetColorU32(col) end

---@param col number
---@return number
function ImGui:GetColorU32(col) end

---@param item_width number
function ImGui:PushItemWidth(item_width) end

function ImGui:PopItemWidth() end

---@param item_width number
function ImGui:SetNextItemWidth(item_width) end

---@return number
function ImGui:CalcItemWidth() end

---@param wrap_local_pos_x number @default value:0.0f
function ImGui:PushTextWrapPos(wrap_local_pos_x) end

function ImGui:PopTextWrapPos() end

---@param allow_keyboard_focus boolean
function ImGui:PushAllowKeyboardFocus(allow_keyboard_focus) end

function ImGui:PopAllowKeyboardFocus() end

---@param bRepeat boolean
function ImGui:PushButtonRepeat(bRepeat) end

function ImGui:PopButtonRepeat() end

function ImGui:Separator() end

---@param offset_from_start_x number @default value:0.0f
---@param spacing number @default value:-1.0f
function ImGui:SameLine(offset_from_start_x, spacing) end

function ImGui:NewLine() end

function ImGui:Spacing() end

---@param size ImVec2
function ImGui:Dummy(size) end

---@param indent_w number @default value:0.0f
function ImGui:Indent(indent_w) end

---@param indent_w number @default value:0.0f
function ImGui:Unindent(indent_w) end

function ImGui:BeginGroup() end

function ImGui:EndGroup() end

---@return ImVec2
function ImGui:GetCursorPos() end

---@return number
function ImGui:GetCursorPosX() end

---@return number
function ImGui:GetCursorPosY() end

---@param local_pos ImVec2
function ImGui:SetCursorPos(local_pos) end

---@param local_x number
function ImGui:SetCursorPosX(local_x) end

---@param local_y number
function ImGui:SetCursorPosY(local_y) end

---@return ImVec2
function ImGui:GetCursorStartPos() end

---@return ImVec2
function ImGui:GetCursorScreenPos() end

---@param pos ImVec2
function ImGui:SetCursorScreenPos(pos) end

function ImGui:AlignTextToFramePadding() end

---@return number
function ImGui:GetTextLineHeight() end

---@return number
function ImGui:GetTextLineHeightWithSpacing() end

---@return number
function ImGui:GetFrameHeight() end

---@return number
function ImGui:GetFrameHeightWithSpacing() end

---@param str_id string
function ImGui:PushID(str_id) end

---@param str_id_begin string
---@param str_id_end string
function ImGui:PushID(str_id_begin, str_id_end) end

---@param ptr_id void
function ImGui:PushID(ptr_id) end

---@param int_id number
function ImGui:PushID(int_id) end

function ImGui:PopID() end

---@param str_id string
---@return number
function ImGui:GetID(str_id) end

---@param str_id_begin string
---@param str_id_end string
---@return number
function ImGui:GetID(str_id_begin, str_id_end) end

---@param ptr_id void
---@return number
function ImGui:GetID(ptr_id) end

---@param text string
---@param text_end string @default value:NULL
function ImGui:TextUnformatted(text, text_end) end

---@param fmt string
function ImGui:Text(fmt) end

---@param col ImVec4
---@param fmt string
function ImGui:TextColored(col, fmt) end

---@param fmt string
function ImGui:TextDisabled(fmt) end

---@param fmt string
function ImGui:TextWrapped(fmt) end

---@param label string
---@param fmt string
function ImGui:LabelText(label, fmt) end

---@param fmt string
function ImGui:BulletText(fmt) end

---@param label string
---@param size ImVec2 @default value:ImVec2(0,0)
---@return boolean
function ImGui:Button(label, size) end

---@param label string
---@return boolean
function ImGui:SmallButton(label) end

---@param str_id string
---@param size ImVec2
---@return boolean
function ImGui:InvisibleButton(str_id, size) end

---@param str_id string
---@param dir number
---@return boolean
function ImGui:ArrowButton(str_id, dir) end

---@param user_texture_id ImTextureID
---@param size ImVec2
---@param uv0 ImVec2 @default value:ImVec2(0,0)
---@param uv1 ImVec2 @default value:ImVec2(1,1)
---@param tint_col ImVec4 @default value:ImVec4(1,1,1,1)
---@param border_col ImVec4 @default value:ImVec4(0,0,0,0)
function ImGui:Image(user_texture_id, size, uv0, uv1, tint_col, border_col) end

---@param user_texture_id ImTextureID
---@param size ImVec2
---@param uv0 ImVec2 @default value:ImVec2(0,0)
---@param uv1 ImVec2 @default value:ImVec2(1,1)
---@param frame_padding number @default value:-1
---@param bg_col ImVec4 @default value:ImVec4(0,0,0,0)
---@param tint_col ImVec4 @default value:ImVec4(1,1,1,1)
---@return boolean
function ImGui:ImageButton(user_texture_id, size, uv0, uv1, frame_padding, bg_col, tint_col) end

---@param label string
---@param v boolean
---@return boolean
function ImGui:Checkbox(label, v) end

---@param label string
---@param flags number
---@param flags_value number
---@return boolean
function ImGui:CheckboxFlags(label, flags, flags_value) end

---@param label string
---@param active boolean
---@return boolean
function ImGui:RadioButton(label, active) end

---@param label string
---@param v number
---@param v_button number
---@return boolean
function ImGui:RadioButton(label, v, v_button) end

---@param fraction number
---@param size_arg ImVec2 @default value:ImVec2(-1,0)
---@param overlay string @default value:NULL
function ImGui:ProgressBar(fraction, size_arg, overlay) end

function ImGui:Bullet() end

---@param label string
---@param preview_value string
---@param flags number @default value:0
---@return boolean
function ImGui:BeginCombo(label, preview_value, flags) end

function ImGui:EndCombo() end

---@param label string
---@param current_item number
---@param items_separated_by_zeros string
---@param popup_max_height_in_items number @default value:-1
---@return boolean
function ImGui:Combo(label, current_item, items_separated_by_zeros, popup_max_height_in_items) end


-----------------------------------------------------------------
---@class ImGuiColumns
---@field public ID number
---@field public Flags number
---@field public IsFirstFrame boolean
---@field public IsBeingResized boolean
---@field public Current number
---@field public Count number
---@field public HostCursorPosY number
---@field public HostCursorMaxPosX number
---@field public HostClipRect ImRect
---@field public HostWorkRect ImRect
---@field public Columns ImVector<ImGuiColumnData>
ImGuiColumns = {}

---@return ImGuiColumns
function ImGuiColumns:new() end

function ImGuiColumns:Clear() end


-----------------------------------------------------------------
---@class ImGuiGroupData
---@field public BackupCursorPos ImVec2
---@field public BackupCursorMaxPos ImVec2
---@field public BackupIndent ImVec1
---@field public BackupGroupOffset ImVec1
---@field public BackupCurrLineSize ImVec2
---@field public BackupCurrLineTextBaseOffset number
---@field public BackupActiveIdIsAlive number
---@field public BackupActiveIdPreviousFrameIsAlive boolean
---@field public EmitItem boolean
ImGuiGroupData = {}


-----------------------------------------------------------------
---@class ImGuiIO
---@field public ConfigFlags number
---@field public BackendFlags number
---@field public DisplaySize ImVec2
---@field public DeltaTime number
---@field public IniSavingRate number
---@field public IniFilename string
---@field public LogFilename string
---@field public MouseDoubleClickTime number
---@field public MouseDoubleClickMaxDist number
---@field public MouseDragThreshold number
---@field public KeyMap[ImGuiKey_COUNT] number
---@field public KeyRepeatDelay number
---@field public KeyRepeatRate number
---@field public UserData void
---@field public FontGlobalScale number
---@field public FontAllowUserScaling boolean
---@field public FontDefault ImFont
---@field public DisplayFramebufferScale ImVec2
---@field public MouseDrawCursor boolean
---@field public ConfigMacOSXBehaviors boolean
---@field public ConfigInputTextCursorBlink boolean
---@field public ConfigWindowsResizeFromEdges boolean
---@field public ConfigWindowsMoveFromTitleBarOnly boolean
---@field public ConfigWindowsMemoryCompactTimer number
---@field public BackendPlatformName string
---@field public BackendRendererName string
---@field public BackendPlatformUserData void
---@field public BackendRendererUserData void
---@field public BackendLanguageUserData void
---@field public MousePos ImVec2
---@field public MouseDown boolean[]
---@field public MouseWheel number
---@field public MouseWheelH number
---@field public KeyCtrl boolean
---@field public KeyShift boolean
---@field public KeyAlt boolean
---@field public KeySuper boolean
---@field public KeysDown[512] boolean
---@field public NavInputs[ImGuiNavInput_COUNT] number
---@field public WantCaptureMouse boolean
---@field public WantCaptureKeyboard boolean
---@field public WantTextInput boolean
---@field public WantSetMousePos boolean
---@field public WantSaveIniSettings boolean
---@field public NavActive boolean
---@field public NavVisible boolean
---@field public Framerate number
---@field public MetricsRenderVertices number
---@field public MetricsRenderIndices number
---@field public MetricsRenderWindows number
---@field public MetricsActiveWindows number
---@field public MetricsActiveAllocations number
---@field public MouseDelta ImVec2
---@field public MousePosPrev ImVec2
---@field public MouseClickedPos ImVec2[]
---@field public MouseClickedTime number[]
---@field public MouseClicked boolean[]
---@field public MouseDoubleClicked boolean[]
---@field public MouseReleased boolean[]
---@field public MouseDownOwned boolean[]
---@field public MouseDownWasDoubleClick boolean[]
---@field public MouseDownDuration number[]
---@field public MouseDownDurationPrev number[]
---@field public MouseDragMaxDistanceAbs ImVec2[]
---@field public MouseDragMaxDistanceSqr number[]
---@field public KeysDownDuration[512] number
---@field public KeysDownDurationPrev[512] number
---@field public NavInputsDownDuration[ImGuiNavInput_COUNT] number
---@field public NavInputsDownDurationPrev[ImGuiNavInput_COUNT] number
---@field public InputQueueCharacters ImVector<uint16_t>
ImGuiIO = {}

---@param c number
function ImGuiIO:AddInputCharacter(c) end

---@param str string
function ImGuiIO:AddInputCharactersUTF8(str) end

function ImGuiIO:ClearInputCharacters() end

---@return ImGuiIO
function ImGuiIO:new() end


-----------------------------------------------------------------
---@class ImGuiStyle
---@field public Alpha number
---@field public WindowPadding ImVec2
---@field public WindowRounding number
---@field public WindowBorderSize number
---@field public WindowMinSize ImVec2
---@field public WindowTitleAlign ImVec2
---@field public WindowMenuButtonPosition number
---@field public ChildRounding number
---@field public ChildBorderSize number
---@field public PopupRounding number
---@field public PopupBorderSize number
---@field public FramePadding ImVec2
---@field public FrameRounding number
---@field public FrameBorderSize number
---@field public ItemSpacing ImVec2
---@field public ItemInnerSpacing ImVec2
---@field public TouchExtraPadding ImVec2
---@field public IndentSpacing number
---@field public ColumnsMinSpacing number
---@field public ScrollbarSize number
---@field public ScrollbarRounding number
---@field public GrabMinSize number
---@field public GrabRounding number
---@field public TabRounding number
---@field public TabBorderSize number
---@field public ColorButtonPosition number
---@field public ButtonTextAlign ImVec2
---@field public SelectableTextAlign ImVec2
---@field public DisplayWindowPadding ImVec2
---@field public DisplaySafeAreaPadding ImVec2
---@field public MouseCursorScale number
---@field public AntiAliasedLines boolean
---@field public AntiAliasedFill boolean
---@field public CurveTessellationTol number
---@field public Colors[ImGuiCol_COUNT] ImVec4
ImGuiStyle = {}

---@param scale_factor number
function ImGuiStyle:ScaleAllSizes(scale_factor) end


-----------------------------------------------------------------
---@class ImGuiWindow
---@field public Name string
---@field public ID number
---@field public Flags number
---@field public Pos ImVec2
---@field public Size ImVec2
---@field public SizeFull ImVec2
---@field public ContentSize ImVec2
---@field public ContentSizeExplicit ImVec2
---@field public WindowPadding ImVec2
---@field public WindowRounding number
---@field public WindowBorderSize number
---@field public NameBufLen number
---@field public MoveId number
---@field public ChildId number
---@field public Scroll ImVec2
---@field public ScrollMax ImVec2
---@field public ScrollTarget ImVec2
---@field public ScrollTargetCenterRatio ImVec2
---@field public ScrollbarSizes ImVec2
---@field public ScrollbarX boolean
---@field public ScrollbarY boolean
---@field public Active boolean
---@field public WasActive boolean
---@field public WriteAccessed boolean
---@field public Collapsed boolean
---@field public WantCollapseToggle boolean
---@field public SkipItems boolean
---@field public Appearing boolean
---@field public Hidden boolean
---@field public HasCloseButton boolean
---@field public BeginCount number
---@field public BeginOrderWithinParent number
---@field public BeginOrderWithinContext number
---@field public PopupId number
---@field public AutoFitFramesX number
---@field public AutoFitFramesY number
---@field public AutoFitChildAxises number
---@field public AutoFitOnlyGrows boolean
---@field public AutoPosLastDirection number
---@field public HiddenFramesCanSkipItems number
---@field public HiddenFramesCannotSkipItems number
---@field public SetWindowPosAllowFlags number
---@field public SetWindowSizeAllowFlags number
---@field public SetWindowCollapsedAllowFlags number
---@field public SetWindowPosVal ImVec2
---@field public SetWindowPosPivot ImVec2
---@field public DC ImGuiWindowTempData
---@field public OuterRectClipped ImRect
---@field public InnerRect ImRect
---@field public InnerClipRect ImRect
---@field public WorkRect ImRect
---@field public ClipRect ImRect
---@field public ContentRegionRect ImRect
---@field public LastFrameActive number
---@field public LastTimeActive number
---@field public ItemWidthDefault number
---@field public MenuColumns ImGuiMenuColumns
---@field public StateStorage ImGuiStorage
---@field public FontWindowScale number
---@field public SettingsOffset number
---@field public DrawList ImDrawList
---@field public DrawListInst ImDrawList
---@field public ParentWindow ImGuiWindow
---@field public RootWindow ImGuiWindow
---@field public RootWindowForTitleBarHighlight ImGuiWindow
---@field public RootWindowForNav ImGuiWindow
---@field public NavLastChildNavWindow ImGuiWindow
---@field public NavLastIds[ImGuiNavLayer_COUNT] number
---@field public NavRectRel[ImGuiNavLayer_COUNT] ImRect
---@field public MemoryCompacted boolean
---@field public MemoryDrawListIdxCapacity number
---@field public MemoryDrawListVtxCapacity number
ImGuiWindow = {}

---@param context ImGuiContext
---@param name string
---@return ImGuiWindow
function ImGuiWindow:new(context, name) end

function ImGuiWindow:delete() end

---@param str string
---@param str_end string @default value:NULL
---@return number
function ImGuiWindow:GetID(str, str_end) end

---@param ptr void
---@return number
function ImGuiWindow:GetID(ptr) end

---@param n number
---@return number
function ImGuiWindow:GetID(n) end

---@param str string
---@param str_end string @default value:NULL
---@return number
function ImGuiWindow:GetIDNoKeepAlive(str, str_end) end

---@param ptr void
---@return number
function ImGuiWindow:GetIDNoKeepAlive(ptr) end

---@param n number
---@return number
function ImGuiWindow:GetIDNoKeepAlive(n) end

---@param r_abs ImRect
---@return number
function ImGuiWindow:GetIDFromRectangle(r_abs) end

---@return ImRect
function ImGuiWindow:Rect() end

---@return number
function ImGuiWindow:CalcFontSize() end

---@return number
function ImGuiWindow:TitleBarHeight() end

---@return ImRect
function ImGuiWindow:TitleBarRect() end

---@return number
function ImGuiWindow:MenuBarHeight() end

---@return ImRect
function ImGuiWindow:MenuBarRect() end


-----------------------------------------------------------------
---@class ImGuiWindowTempData
---@field public CursorPos ImVec2
---@field public CursorPosPrevLine ImVec2
---@field public CursorStartPos ImVec2
---@field public CursorMaxPos ImVec2
---@field public CurrLineSize ImVec2
---@field public PrevLineSize ImVec2
---@field public CurrLineTextBaseOffset number
---@field public PrevLineTextBaseOffset number
---@field public TreeDepth number
---@field public TreeMayJumpToParentOnPopMask number
---@field public LastItemId number
---@field public LastItemStatusFlags number
---@field public LastItemRect ImRect
---@field public LastItemDisplayRect ImRect
---@field public NavLayerCurrent ImGuiNavLayer
---@field public NavLayerCurrentMask number
---@field public NavLayerActiveMask number
---@field public NavLayerActiveMaskNext number
---@field public NavHideHighlightOneFrame boolean
---@field public NavHasScroll boolean
---@field public MenuBarAppending boolean
---@field public MenuBarOffset ImVec2
---@field public StateStorage ImGuiStorage
---@field public LayoutType ImGuiLayoutType
---@field public ParentLayoutType ImGuiLayoutType
---@field public FocusCounterAll number
---@field public FocusCounterTab number
---@field public ItemFlags number
---@field public ItemWidth number
---@field public TextWrapPos number
---@field public ItemFlagsStack ImVector<int>
---@field public ItemWidthStack ImVector<float>
---@field public TextWrapPosStack ImVector<float>
---@field public StackSizesBackup number[]
---@field public Indent ImVec1
---@field public GroupOffset ImVec1
---@field public ColumnsOffset ImVec1
---@field public CurrentColumns ImGuiColumns
ImGuiWindowTempData = {}

---@return ImGuiWindowTempData
function ImGuiWindowTempData:new() end


-----------------------------------------------------------------
---@class ImRect
---@field public Min ImVec2
---@field public Max ImVec2
ImRect = {}

---@return ImRect
function ImRect:new() end

---@param min ImVec2
---@param max ImVec2
---@return ImRect
function ImRect:new(min, max) end

---@param v ImVec4
---@return ImRect
function ImRect:new(v) end

---@param x1 number
---@param y1 number
---@param x2 number
---@param y2 number
---@return ImRect
function ImRect:new(x1, y1, x2, y2) end

---@return ImVec2
function ImRect:GetCenter() end

---@return ImVec2
function ImRect:GetSize() end

---@return number
function ImRect:GetWidth() end

---@return number
function ImRect:GetHeight() end

---@return ImVec2
function ImRect:GetTL() end

---@return ImVec2
function ImRect:GetTR() end

---@return ImVec2
function ImRect:GetBL() end

---@return ImVec2
function ImRect:GetBR() end

---@param p ImVec2
---@return boolean
function ImRect:Contains(p) end

---@param r ImRect
---@return boolean
function ImRect:Contains(r) end

---@param r ImRect
---@return boolean
function ImRect:Overlaps(r) end

---@param p ImVec2
function ImRect:Add(p) end

---@param r ImRect
function ImRect:Add(r) end

---@param amount number
function ImRect:Expand(amount) end

---@param amount ImVec2
function ImRect:Expand(amount) end

---@param d ImVec2
function ImRect:Translate(d) end

---@param dx number
function ImRect:TranslateX(dx) end

---@param dy number
function ImRect:TranslateY(dy) end

---@param r ImRect
function ImRect:ClipWith(r) end

---@param r ImRect
function ImRect:ClipWithFull(r) end

function ImRect:Floor() end

---@return boolean
function ImRect:IsInverted() end


-----------------------------------------------------------------
---@class ImVec1
---@field public x number
ImVec1 = {}

---@return ImVec1
function ImVec1:new() end

---@param _x number
---@return ImVec1
function ImVec1:new(_x) end


-----------------------------------------------------------------
---@class ImVec2
---@field public x number
---@field public y number
ImVec2 = {}

---@return ImVec2
function ImVec2:new() end

---@param _x number
---@param _y number
---@return ImVec2
function ImVec2:new(_x, _y) end

---@param idx number
---@return number[]
function ImVec2:__index(idx) end


-----------------------------------------------------------------
---@class ImVec4
---@field public x number
---@field public y number
---@field public z number
---@field public w number
ImVec4 = {}

---@return ImVec4
function ImVec4:new() end

---@param _x number
---@param _y number
---@param _z number
---@param _w number
---@return ImVec4
function ImVec4:new(_x, _y, _z, _w) end


-----------------------------------------------------------------
---@class ImVector
ImVector = {}

---@return ImVector
function ImVector:new() end

function ImVector:delete() end

---@return boolean
function ImVector:empty() end

---@return number
function ImVector:size() end

---@return number
function ImVector:size_in_bytes() end

---@return number
function ImVector:capacity() end

---@param i number
---@return T[]
function ImVector:__index(i) end

function ImVector:clear() end

---@return T
function ImVector:begin() end

---@return T
function ImVector:endl() end

---@return T
function ImVector:front() end

---@return T
function ImVector:back() end

---@param sz number
---@return number
function ImVector:_grow_capacity(sz) end

---@param new_size number
function ImVector:resize(new_size) end

---@param new_size number
---@param v T
function ImVector:resize(new_size, v) end

---@param new_size number
function ImVector:shrink(new_size) end

---@param new_capacity number
function ImVector:reserve(new_capacity) end

---@param v T
function ImVector:push_back(v) end

function ImVector:pop_back() end

---@param v T
function ImVector:push_front(v) end

---@param it T
---@return T
function ImVector:erase(it) end

---@param it T
---@param it_last T
---@return T
function ImVector:erase(it, it_last) end

---@param it T
---@return T
function ImVector:erase_unsorted(it) end

---@param it T
---@param v T
---@return T
function ImVector:insert(it, v) end

---@param v T
---@return boolean
function ImVector:contains(v) end

---@param v T
---@return T
function ImVector:find(v) end

---@param v T
---@return boolean
function ImVector:find_erase(v) end

---@param v T
---@return boolean
function ImVector:find_erase_unsorted(v) end

---@param it T
---@return number
function ImVector:index_from_ptr(it) end


-----------------------------------------------------------------
--global function define
-----------------------------------------------------------------

